home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / basketbl.arc / BASKETBL.BAS
Encoding:
BASIC Source File  |  1985-05-09  |  4.0 KB  |  145 lines

  1. 1    '   ** PROGRAM 4.19 **
  2. 10   '   ** USE MATH EQUATION TO CONTROL BOUNCING BALL **
  3. 20   SCREEN 1
  4. 30   CLS
  5. 40   COLOR 0,1
  6. 50   KEY OFF
  7. 60   ' GIVE USER DIRECTIONS
  8. 70   LOCATE 9,12
  9. 80   PRINT "The Bouncing Ball"
  10. 90   LOCATE 16,13
  11. 100  PRINT "Type 'Q' to Quit"
  12. 110  LOCATE 17,11
  13. 120  PRINT "Type 'C' to Continue"
  14. 130  A$=INKEY$
  15. 140  IF A$="c" OR A$="C" THEN 180
  16. 150  IF A$="q" OR A$="Q" THEN 3000
  17. 160  GOTO 130
  18. 170  '   *****  Start Game *****
  19. 180  CLS
  20. 190  ' ** Draw Basket **
  21. 200  BASKET = 0
  22. 210  PSET (250,5),2
  23. 220  DRAW "D65R5U65L5"
  24. 230  PAINT (252,25),2,2
  25. 240  PSET (250,65),2
  26. 250  DRAW "l50"
  27. 260  LINE -(210,95),3
  28. 270  LINE (245,65)-(235,95),3
  29. 280  LINE (220,65)-(230,95),3
  30. 290  LINE (210,65)-(220,95),3
  31. 300  LINE (235,65)-(225,95),3
  32. 310  LINE (225,65)-(215,95),3
  33. 320  LINE (215,65)-(207,85),3
  34. 330  LINE (230,65)-(238,85),3
  35. 340  ' ** Draw Ball **
  36. 350  CIRCLE (35,182),12,2
  37. 360  PAINT (35,182),2,2
  38. 370  CIRCLE (50,182),12,0
  39. 380  CIRCLE (20,182),12,0
  40. 390  LINE (23,182)-(47,182),0
  41. 400  ' *** Create Figures for Ball in Different Positions ***
  42. 410  DIM BALL (200)
  43. 420  DIM BALL2(200)
  44. 430  DIM BALL3(200)
  45. 440  DIM BALL4(200)
  46. 450  GET (15,198)-(47,170),BALL
  47. 460  GET (23,194)-(47,170),BALL2
  48. 470  GET (23,194)-(47,165),BALL3
  49. 480  GET (23,196)-(57,168),BALL4
  50. 490  ' *** Draw Rest of Background ***
  51. 500  PSET (255,35),2
  52. 510  DRAW "R30D160L4U156L26"
  53. 520  PAINT (257,37),2,2
  54. 530  LINE (0,200)-(320,200),1
  55. 540  '  *** Set up Music Strings ***
  56. 550  L$="T200O3L2B-L4B-.L8AL4GL4F.P4"
  57. 560  M$="l8dl8e-l4fl8gl8al4b-o4l4co3l2a."
  58. 570  N$="l8fl8ao4l8cl2dl2co3l2b-.p4"
  59. 580  O$="l8al8b-o4l4co3l4b-l4al4gl4fo4l4dl8dl4c."
  60. 590  P$="o3l2b-.l8a-l8gl8fl4a-l4gl2gl4g.l8al8bo4l8cl4dl3e-.p4"
  61. 600  Q$="o3l4fl2b-l4ff#l2go4dl4do3b-l8b-o4l4c.o3l2b-.p20"
  62. 610  ' *** Place ball to Begin ***
  63. 620  X=15
  64. 630  Y=170
  65. 640  PUT (X,Y),BALL,XOR
  66. 650  ' *** Loop for Action. See if user wants to quit ***
  67. 660  A$=INKEY$
  68. 670  IF A$="q" OR A$="Q" THEN 3000
  69. 680  ' *** Play music with the action ***
  70. 690  GOSUB 2000
  71. 700  GOSUB 2002
  72. 710  GOSUB 2004
  73. 720  ' ** Use parabolic equation to calculate trajectory of ball **
  74. 730  ' *** Equation for motion to hoop ***
  75. 740  FOR Z = 35 TO 217 STEP 2.5
  76. 750    G = -2.515656*Z+6.96499E-03*Z*Z+249.7012
  77. 760    G = INT(G)
  78. 770    PUT (Z,G),BALL,PSET
  79. 780  NEXT
  80. 790  GOSUB 2001
  81. 800  PUT (Z-2.5,G),BALL,XOR
  82. 810  ' *** Bounce off backboard ***
  83. 820  FOR Z=216 TO 250 STEP -2
  84. 830     G = G + 2
  85. 840     PUT (Z,G),BALL2,PSET
  86. 850     PUT (Z,G),BALL2,XOR
  87. 860  NEXT
  88. 870  ' *** go through hoop ***
  89. 880  Y = G
  90. 890  Z = 211
  91. 900  FOR G = Y TO 95 STEP 5
  92. 910     PUT (Z,G),BALL2,XOR
  93. 920     PUT (Z,G),BALL2,XOR
  94. 930  NEXT
  95. 940  ' play more music
  96. 950  GOSUB 2003
  97. 960  ' ** fall to ground **
  98. 970  FOR G = 100 TO 165 STEP 5
  99. 980     PUT (Z,G),BALL3,PSET
  100. 990  NEXT
  101. 1000 ' ** take first ground bounce **
  102. 1010 PUT (Z,G-5),BALL3,XOR
  103. 1020 G=G-5
  104. 1030 FOR Z = 210 TO 180 STEP -4
  105. 1040    PUT (Z,G),BALL4,PSET
  106. 1050    G = G - 4
  107. 1060 NEXT
  108. 1070 ' ** downward trajectory on first bounce **
  109. 1080 FOR Z = 180 TO 146 STEP -4
  110. 1090    PUT (Z,G),BALL4,PSET
  111. 1100    G = G + 4
  112. 1110 NEXT
  113. 1120 ' ** second bounce up **
  114. 1130 FOR Z = 146 TO 120 STEP -3
  115. 1140    PUT (Z,G),BALL4,PSET
  116. 1150    G = G - 3
  117. 1160 NEXT
  118. 1170 ' ** end second bounce **
  119. 1180 FOR Z = 120 TO 97 STEP -3
  120. 1190    PUT (Z,G),BALL4,PSET
  121. 1200    G = G + 3
  122. 1210 NEXT
  123. 1220 ' ** start up on last bounce **
  124. 1230 G = G + 2
  125. 1240 FOR Z = 96 TO 65 STEP -2
  126. 1250    PUT (Z,G),BALL4,PSET
  127. 1260    G = G - 1
  128. 1270 NEXT
  129. 1280 ' ** end last bounce **
  130. 1290 FOR Z = 65 TO 34 STEP -2
  131. 1300    PUT (Z,G),BALL4,PSET
  132. 1310    G = G + 1
  133. 1320 NEXT
  134. 1330  ' reset and begin again
  135. 1340 IF BASKET = 2 THEN BASKET = 0 ELSE BASKET = BASKET + 1
  136. 1350 GOTO 650
  137. 1360 ' ** go-team-go music **
  138. 2000 IF BASKET=0 THEN PLAY "mbxl$;xm$;":RETURN ELSE RETURN
  139. 2001 IF BASKET = 0 THEN PLAY "mbxn$;":RETURN ELSE RETURN
  140. 2002 IF BASKET = 1 THEN PLAY "mbxo$;":RETURN ELSE RETURN
  141. 2003 IF BASKET = 1 THEN PLAY "mbxp$;":RETURN ELSE RETURN
  142. 2004 IF BASKET = 2 THEN PLAY "mbxq$;"
  143. 2005 RETURN
  144. 3000 END
  145.